/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;
import Classes.CidadeClass;
import Classes.ClientesClass;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
 *
 * @author Carlos Schaefer
 */
public class ClienteDAO {
            private Session session;
    
    public ClienteDAO(){
            session = Util.HibernateUtil.getSessionFactory().openSession(); 
            }
    
    public void insert(ClientesClass cli){
        Transaction t = session.beginTransaction();
        session.save(cli);
        t.commit();
        }
    
    public void update(ClientesClass cli){
        Transaction t = session.beginTransaction();
        session.merge(cli);//mesmo que o update
        t.commit();
        }
    public void delete(ClientesClass cli){
        Transaction t = session.beginTransaction();
        session.delete(cli);//mesmo que o update
        t.commit();
        }
    
    //buscar uma marca
    public ClientesClass findbyid(int id){
        return (ClientesClass)session.load(ClientesClass.class, id);//loadsó funciona com a chave primaria
        }
    
    //Buscar todos os produtos
    public List<ClientesClass> findall(){
        Query qu = session.createQuery("From ClientesClass");
        return qu.list();
        }
    
    public List<ClientesClass>findAllCli(String cli, ClientesClass clicid){
        Query qu = session.createQuery("From ClientesClass cli inner join CidadeClass cid ON cli.seq_cidade = cid.id where cid.nome like '%"+clicid.getId()+"%' Or nome like '%"+cli+"%'");
        return qu.list();
    }
    
   /* public List<ClientesClass>findAllCliCid(String clicid){
        Query qu = session.createQuery("from ClientesClass inner join CidadeClass ON "+clicid+" like CidadeClass.nome");
        return qu.list();
    }*/
    
    public List<ClientesClass> findByHQL (String hql, List params){
        Query q = this.session.createQuery(hql);
        
        int i = 0;
        for (Object ps: params){
            q.setParameter(i++, ps);            
        }
        return q.list();
        
    }

    public List<ClientesClass> findAllCli(String text, CidadeClass cidadeClass) {
        Query query = session.createSQLQuery("From ClientesClass cli inner join CidadeClass cid ON cli.seq_cidade = cid.id where seq_cidade = '%"+cidadeClass.getId()+"%' Or nome like '%"+text+"%'");
        return query.list();
    }
}
